package 力扣题库;

public class p459重复的子字符串 {
    public boolean repeatedSubstringPattern(String s) {
        String str=s+s;
        return s.substring(1,str.length()-1).contains(s);//拼接的字符串中含有原字符串，则返回true
    }

    public boolean repeatedSubstringPattern1(String s) {
        int len=s.length();

        for (int i = 1; i*2 <=len; i++) {
            //外层循环，确定当前子串的长度
            //i*2 <=len; 是进一步的优化，因为存在重复的子串，那么子串长度的2倍一定是小于等于字符串长度
            if (len%i==0) {
                //子串的长度 一定是 原串长度的n倍，如果不满足这个条件，那么一定不能构成重复子串
                boolean match=true;
                for (int j = i; j < len; j++) {
                    //内层循环，检查子串长度为i时，能否构成s的重复子串
                    if (s.charAt(j)!=s.charAt(j-i)) {
                        match=false;
                        break;
                    }
                }

                if (match) {
                    return true;
                }
            }
        }
        return false;

    }
}
